1. 연산자의 이해
연산자는 연산을 수행하는 기호를 말한다. 사칙 연산에 사용되는(+, -, *, /) 등 사칙연산을 포함한 다른 연산자도 Java에서 사용한다
연산자와 피 연산자
- 연산자 : 연산을 수행하는 기호( +, -, …등등)
- 피 연산자 : 연산자의 수행 대상 (상수, 리터럴, 변수 등)
2. 연산자의 종류
종류 | 연산자 | 우선순위 |
단항 연산자 | ++ — + - ! ~ | 높음 |
산술 연산자 | * / % | ㅤ |
ㅤ | + - ( 곱하기 -1 ) | ㅤ |
ㅤ | << >> | ㅤ |
비교 연산자 | > >= instanceof | ㅤ |
ㅤ | == != | ㅤ |
논리 연산자 | & ^ | && || (순서대로 우선순위 높음) | ㅤ |
삼항 연산자 | ? : ex) (a>b) ? c : d | ㅤ |
대입 연산자 | = += -= *= /= %= <<= &= ^= |= | 낮음 |
산술 변환
피 연산자의 타입이 서로 다르다면 연산 전에 형 변환 연산자로 타입을 일치 시켜야 한다.
자동으로 형 변환이 되는 경우 두 피 연산자의 타입 중에서 더 큰 타입으로 일치 시킨다.
😜세가지만 기억하기
- 산술 연산 때는 피 연산자의 타입이 같아야 한다.
- 피 연산자의 타입이 int보다 작으면 int타입으로 변환된다.
- 연산 결과와 저장 변수의 타입은 다를 수 있다.
- 피 연산자가 int보단 크고 서로 다르면 더 큰 피 연산자 타입으로 변환된다.
단항 연산자
- 증감 연산자 ( ++ — )
- ++ → 피 연산자의 값을 1 증가 시킨다.
- — → 피 연산자의 값을 1 감소 시킨다.
1.1 코드로 보는 증감 연산자
- 뒤에 붙어있는 증감 연산자는 변수를 먼저 읽어오고 수식을 더한다
- 앞에 있는 연산자는 더하고 변수를 읽어온다.
- 부호 연산자 ( + - )
- 부호 연산자는 피 연산자의 부호를 반대로 변경한 결과를 반환한다.
- 산술 연산자
- 비교 연산자( 대소 비교 → < > 등가 비교 → == != )
🙆🏻 주의 사항
- 문자열의 비교는 String 클래스에서 제공하는 equals() 함수로 비교해야 함.
비교 연산자 “==”는 두 문자열이 완벽히 같은 지만 판단하기 때문에 false가 출력 된다.
- 논리 연산자( &&, ||, ! )
- && ( AND 연산자 )
- || ( OR 연산자 )
- ! ( NOT 연산자 )
🤪 헷갈리는 논리 연산자 한번에 보기
A | B | A && B | A || B | ! A , ! B |
true | true | true | true | false, false |
true | false | flase | true | false, true |
false | false | false | false | true, true |
😝 논리 연산자와 비교 연산자를 활용해보기
팁
- AND 연산의 경우에는 거짓 구문일 확률이 높은 구문을 왼쪽에
- OR 연산의 경우에는 참 구문을 왼쪽에 두면 컴파일 속도가 빨라 질 수 있습니다.
- 비트 연산자 ( & | ^ ~ << >> )
- & (AND 연산자) → 서로 같을 때만 1
- | (OR 연산자) → 둘중 한개만 1이여도 1
- ^ (XOR 연산자) → 두 비트가 같으면 0 다르면 1
6.1 한눈에 알아보는 비트 연산자
x | y | x & y | x | y | x ^ y | ~x, ~y |
0 | 0 | 0 | 0 | 0 | 1, 1 |
1 | 0 | 0 | 1 | 1 | 0, 1 |
0 | 1 | 0 | 1 | 1 | 1, 0 |
1 | 1 | 1 | 1 | 0 | 0, 0 |
6.2 쉬프트 연산자
- 비트 이동 연산자라고 생각하면 된다.
<< 연산은 * 2 n승과 같고 >> 연산은 / 2 n승과 같다.
- 그 외 연산자
- ? : 연산자 ( 물음표 앞에 있는 수식이 true이면 따옴표 왼쪽 값을, false면 오른쪽 값을 출력한다)
- =, op= 연산자(복합 대입 연산자)
이와 같이 다른 연산자(op)와 결합하여 op= 와 같은 방식으로 나타낼 수 있다.